\documentclass[cn]{elegantpaper}
\title{每个 \LaTeX{} 用户都应该使用的 9 个宏包 \thanks{译者注：这篇文章是 2012 年的，部分内容有删改，另外，可能你会发现某些宏包已经被淘汰了，或者某些宏包的选项已经改变，或者有更好的宏包选择，欢迎发表您的见解，本文仅为抛砖引玉之用！ }}
\author{翻译：\href{https://ddswhu.me/}{邓东升}}
\institute{\href{https://elegantlatex.org/}{Elegant\LaTeX{} 项目组}}
\version{1.00}
\date{\today}
\usepackage{siunitx}
\lstset{
 emph={geometry,amsmath,nag,cleveref,booktabs,graphicx,microtype,siunitx,hyperref},
 morekeywords={ref,cref,eqref,num,SI,SIrange,si,}
}
\begin{document}
\maketitle

\section{介绍}

最开始，我建立这个博客是为了帮助 \LaTeX{} 的新手，但后来随着 \href{http://www.howtotex.com/}{howto\TeX{}.com}\footnote{2019/03/05，网站已关闭。} 的建立，博客的受众变得更广了，在我看来，这也不是件坏事。你所面临的挑战只会让你一直努力向前！然而，今天，在这篇文章中，我总结了每个 \LaTeX{} 用户都应该使用的 9 个宏包，这篇文章对于新手来说是非常有用的\footnote{译者注：对于我们国内大部分人来说都是值得一看的。}！让我们开始吧！ 宏包的顺序与其重要性无关，顺序是完全随机的。每节的首行是我调用宏包的常用方式，仅作参考！

\section{宏包推荐}

\subsection{amsmath}

\begin{lstlisting}
\usepackage{amsmath}
\end{lstlisting}

\lstinline{amsmath} 宏包是 AMS（美国数学协会）系列宏包中最重要的宏包，这个宏包引入了一些改进的数学环境。比如：加载 \lstinline{amsmath} 之后，我们可以使用 align 环境。我所有的行间公式都使用了 align 环境 (或者无编号版的 align* 环境)，即便有时候公式不需要对齐。Lars Madsen 在 Prac\TeX{} 杂志上有篇文章也鼓励使用 \lstinline{amsmath} 宏包的环境，详细参看 \href{http://www.tug.org/pracjourn/2006-4/madsen/madsen.pdf}{Avoid eqnarray!}。


\subsection{geometry}

\begin{lstlisting}
\usepackage[a4paper]{geometry}
\end{lstlisting}

使用 \lstinline{geometry} 宏包来调整页面的页边距非常方便。整个文档默认的页边距可以通过这个宏包的选项来改变，大部分情况下，我使用这个宏包来创建 A4 纸张以及相应的页边距。使用这个宏包，我们也可以改变某个特定页面的页边距，至于如何使用 \lstinline{geometry} 宏包重新设定文档奇偶页的边距，详情参看 \href{https://ctan.org/pkg/geometry}{CTAN-geometry}。

\subsection{graphicx}

\begin{lstlisting}
\usepackage{graphicx}
\end{lstlisting}

关于 \lstinline{graphicx} 没啥特别的，但是它可能是所有宏包中最重要的宏包，这个宏包引入了插图命令 \lstinline|\includegraphics|，我们的文档如果需要插图都将用到它。

\subsection{nag}

\begin{lstlisting}
\RequirePackage[l2tabu, orthodox]{nag}
\end{lstlisting}

事实上，如果你的代码没问题，这个宏包将不会做任何事情。注意：把这个宏包放在你的导言区的第一行（甚至在 \lstinline|\documentclass| 之前）。它将会检测你文档中是否使用已经被淘汰了的宏包以及过时的命令，\lstinline{nag} 的文档说明可以访问 \href{https://ctan.org/pkg/nag}{CTAN-nag}。

\subsection{microtype}

\begin{lstlisting}
\usepackage{microtype}
\end{lstlisting}

\lstinline{microtype} 宏包可以改善了单词、字母的间距。它可能做了很多，但是大部分人察觉不到使用它之后文档的变化。但至少，加载了 \lstinline{microtype} 之后，文档看起来更好，也更容易阅读。注意：如果有使用到字体宏包，需要将 \lstinline{microtype} 宏包放在它们的后面，因为这个宏包对单词、字母的调整和字体是有关的。

\subsection{siunitx}

\begin{lstlisting}
\usepackage{siunitx}
\end{lstlisting}

\lstinline{siunitx} 宏包大大简化了写作科技文的 \TeX{} 命令，科技文写作中很大一部分是单位、数字。这个宏包添加了一些命令，比如 \lstinline|\num| 命令可以输出我们想要的各种方式的数字形式（比如科学记数法），而 \lstinline|\si| 命令用来输出单位。我经常用到的命令是 \lstinline|\SI| 和 \lstinline|\SIrange|。比如 \lstinline|\SI{10}{\hertz}| 输出为 “\SI{10}{\hertz}”\footnote{这能有效避免输入错误，我可能会写成 HZ 或者 hz 而不是 Hz。}。\lstinline|\SIrange| 命令多一个参数：\lstinline|\SIrange{10}{100}{\hertz}| 输出为 “\SIrange{10}{100}{\hertz}”。

\subsection{cleveref}

\begin{lstlisting}
\usepackage{cleveref}
\end{lstlisting}

另外一个非常有吸引力的宏包是 \lstinline{cleveref}。这个宏包引入了 \lstinline|\cref| 命令，当使用这个命令用于交叉引用的时候（而不是 \lstinline|\ref| 或者 \lstinline|\eqref|），根据引用的不同，它会自动添加一个单词前缀，引用 figure 环境，它会自动添加 “fig.”，而对于 equation 环境，它会自动添加 “eq.”。因此，这是一个用来简化写作的 \LaTeX{} 宏包。而如果你想修改词缀，可以参考 \href{https://ctan.org/pkg/cleveref}{CTAN-cleveref}。

\subsection{hyperref}

\begin{lstlisting}
\usepackage[colorlinks=false, pdfborder={0 0 0}]{hyperref}
\end{lstlisting}

\lstinline{hyperref} 非常强大，你可以有非常多的可能性，其中最突出的特色是超链接。当引用一幅图的时候，引用与图形形成了链接，当你点击引用的地方，它会跳转到链接的图片处。并且 \lstinline{hyperref} 可以让你插入 PDF 元数据到你的最终文档中。注意：作为一个经验法则，你应该在导言区的最后加入这个宏包，在所有宏包之后。也存在少数例外的情况：比如，本文提到的 \lstinline{cleveref} 宏包，\lstinline{cleveref} 宏包应该在 \lstinline{hyperref} 之后。更多的例外情况可以参看：\href{http://tex.stackexchange.com/questions/1863/which-packages-should-be-loaded-after-hyperref-instead-of-before}{Which packages should be loaded after hyperref instead of before?}。

\subsection{booktabs}

\begin{lstlisting}
\usepackage{booktabs}
\end{lstlisting}

\lstinline{booktabs} 宏包可以让我们创建没有竖线分隔的表格，这些分隔线在很多情况下是不必要的，并且很难看。使用 \lstinline{booktabs} 宏包创建表格比创建普通 \LaTeX{} 表格更费劲。因此，我专门写了一篇文章，关于怎样使用 \lstinline{booktabs} 宏包创建好看的表格，详情参看 \href{https://ctan.org/pkg/booktabs}{CTAN-booktabs}。

\end{document}
